package src.itheima01;

import java.util.LinkedList;

/*
    LinkedList集合中,具有栈结构特点(先进后出)的方法
        - public E pop():从此列表所表示的堆栈处弹出一个元素。       底层原理 调用removeFirst
        - public void push(E e):将元素推入此列表所表示的堆栈。     底层原理 调用addFirst

    面试题:
        利用LinkedList集合,定义一个类MyStack<E>,模拟栈结构的特点(先进后出)
        MyStack内部,定义方法:
        in(E e): 向栈中压入(存储)一个数据
        E out(): 从栈中取出一个数据
 */
public class Demo04LinkedListStack {
    public static void main(String[] args) {
        LinkedList<Integer> linked = new LinkedList<>();
        //push方法: 添加数据
        linked.push(1);
        System.out.println(linked);//[1]
        linked.push(2);
        System.out.println(linked);//[2, 1]
        linked.push(3);
        System.out.println(linked);//[3, 2, 1]
        linked.push(4);
        System.out.println(linked);//[4, 3, 2, 1]

        //pop方法: 取出并删除数据
        int one = linked.pop();
        int two = linked.pop();
        int three = linked.pop();
        int four = linked.pop();
        System.out.println(one);
        System.out.println(two);
        System.out.println(three);
        System.out.println(four);

        System.out.println(linked);//[]
    }
}
